From f440704e50e31e45d826654de20046dc6c746fa1 Mon Sep 17 00:00:00 2001 From: Inokentiy Babushkin Date: Fri, 2 Dec 2016 19:43:37 +0100 Subject: [PATCH] Refactored ugly rustflags lookup code into a separate function. --- src/cargo/ops/cargo_rustc/context.rs | 28 ++++---------------------- src/cargo/util/config.rs | 30 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/cargo/ops/cargo_rustc/context.rs b/src/cargo/ops/cargo_rustc/context.rs index 2ec275e71..9cb4af910 100644 --- a/src/cargo/ops/cargo_rustc/context.rs +++ b/src/cargo/ops/cargo_rustc/context.rs @@ -856,37 +856,17 @@ fn env_args(config: &Config, // Then the target.*.rustflags value let target = build_config.requested_target.as_ref().unwrap_or(&build_config.host_triple); let key = format!("target.{}.{}", target, name); - let list = config.get_list(&key); - if let Ok(Some(args)) = list { - let args = args.val.into_iter().map(|a| a.0); + if let Some(args) = config.get_list_or_split_string(&key)? { + let args = args.val.into_iter(); return Ok(args.collect()); } - let string = config.get_string(&key); - if let Ok(Some(arg)) = string { - return Ok(arg.val.split(' ').map(str::to_string).collect()); - } - if list.is_err() && string.is_err() { - if let Some(value) = config.values()?.get(&key) { - return config.expected("list or string", &key, value.clone()); - } - } // Then the build.rustflags value let key = format!("build.{}", name); - let list = config.get_list(&key); - if let Ok(Some(args)) = list { - let args = args.val.into_iter().map(|a| a.0); + if let Some(args) = config.get_list_or_split_string(&key)? { + let args = args.val.into_iter(); return Ok(args.collect()); } - let string = config.get_string(&key); - if let Ok(Some(arg)) = string { - return Ok(arg.val.split(' ').map(str::to_string).collect()); - } - if list.is_err() && string.is_err() { - if let Some(value) = config.values()?.get(&key) { - return config.expected("list or string", &key, value.clone()); - } - } Ok(Vec::new()) } diff --git a/src/cargo/util/config.rs b/src/cargo/util/config.rs index dc97acc0a..598a6dccc 100644 --- a/src/cargo/util/config.rs +++ b/src/cargo/util/config.rs @@ -225,6 +225,36 @@ impl Config { } } + pub fn get_list_or_split_string(&self, key: &str) + -> CargoResult>>> { + match self.get_env::(key) { + Ok(Some(value)) => + return Ok(Some(Value { + val: value.val.split(' ').map(str::to_string).collect(), + definition: value.definition + })), + Err(err) => return Err(err), + Ok(None) => (), + } + + match self.get(key)? { + Some(CV::List(i, path)) => { + Ok(Some(Value { + val: i.into_iter().map(|(s, _)| s).collect(), + definition: Definition::Path(path), + })) + } + Some(CV::String(i, path)) => { + Ok(Some(Value { + val: i.split(' ').map(str::to_string).collect(), + definition: Definition::Path(path), + })) + } + Some(val) => self.expected("list or string", key, val), + None => Ok(None), + } + } + pub fn get_table(&self, key: &str) -> CargoResult>>> { match self.get(key)? { -- 2.30.2